#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h"
#ifdef __cplusplus
extern "C" {
#endif
btTranslationalLimitMotor* bullet_NewbtTranslationalLimitMotor(){
	btTranslationalLimitMotor* wrap_out = new btTranslationalLimitMotor();
	return wrap_out;
}

btTranslationalLimitMotor* bullet_NewbtTranslationalLimitMotor1(btTranslationalLimitMotor* other){
	btTranslationalLimitMotor const& c_arg_other=(btTranslationalLimitMotor const&)(*other);
	btTranslationalLimitMotor* wrap_out = new btTranslationalLimitMotor(c_arg_other);
	return wrap_out;
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_accumulatedImpulse(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_accumulatedImpulse);
}

int** bullet_btTranslationalLimitMotor_GetFieldOfM_currentLimit(btTranslationalLimitMotor* c_this){
	return (int**)(&c_this->m_currentLimit);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_currentLimitError(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_currentLimitError);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_currentLinearDiff(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_currentLinearDiff);
}

double bullet_btTranslationalLimitMotor_GetFieldOfM_damping(btTranslationalLimitMotor* c_this){
	return (double)(c_this->m_damping);
}

bool** bullet_btTranslationalLimitMotor_GetFieldOfM_enableMotor(btTranslationalLimitMotor* c_this){
	return (bool**)(&c_this->m_enableMotor);
}

double bullet_btTranslationalLimitMotor_GetFieldOfM_limitSoftness(btTranslationalLimitMotor* c_this){
	return (double)(c_this->m_limitSoftness);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_lowerLimit(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_lowerLimit);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_maxMotorForce(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_maxMotorForce);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_normalCFM(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_normalCFM);
}

double bullet_btTranslationalLimitMotor_GetFieldOfM_restitution(btTranslationalLimitMotor* c_this){
	return (double)(c_this->m_restitution);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_stopCFM(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_stopCFM);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_stopERP(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_stopERP);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_targetVelocity(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_targetVelocity);
}

btVector3* bullet_btTranslationalLimitMotor_GetFieldOfM_upperLimit(btTranslationalLimitMotor* c_this){
	return (btVector3*)(&c_this->m_upperLimit);
}

bool bullet_btTranslationalLimitMotor_isLimited(btTranslationalLimitMotor* c_this,int limitIndex){
	int c_arg_limitIndex=limitIndex;
	bool c_out = c_this->isLimited(c_arg_limitIndex);
	bool wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btTranslationalLimitMotor_needApplyForce(btTranslationalLimitMotor* c_this,int limitIndex){
	int c_arg_limitIndex=limitIndex;
	bool c_out = c_this->needApplyForce(c_arg_limitIndex);
	bool wrap_out = (c_out);
	return wrap_out;
}

double bullet_btTranslationalLimitMotor_solveLinearAxis(btTranslationalLimitMotor* c_this,double timeStep,double jacDiagABInv,btRigidBody* body1,btVector3* pointInA,btRigidBody* body2,btVector3* pointInB,int limit_index,btVector3* axis_normal_on_a,btVector3* anchorPos){
	btScalar c_arg_timeStep=timeStep;
	btScalar c_arg_jacDiagABInv=jacDiagABInv;
	btRigidBody& c_arg_body1=(btRigidBody&)(*body1);
	btVector3 const& c_arg_pointInA=(btVector3 const&)(*pointInA);
	btRigidBody& c_arg_body2=(btRigidBody&)(*body2);
	btVector3 const& c_arg_pointInB=(btVector3 const&)(*pointInB);
	int c_arg_limit_index=limit_index;
	btVector3 const& c_arg_axis_normal_on_a=(btVector3 const&)(*axis_normal_on_a);
	btVector3 const& c_arg_anchorPos=(btVector3 const&)(*anchorPos);
	btScalar c_out = c_this->solveLinearAxis(c_arg_timeStep,c_arg_jacDiagABInv,c_arg_body1,c_arg_pointInA,c_arg_body2,c_arg_pointInB,c_arg_limit_index,c_arg_axis_normal_on_a,c_arg_anchorPos);
	double wrap_out = (c_out);
	return wrap_out;
}

int bullet_btTranslationalLimitMotor_testLimitValue(btTranslationalLimitMotor* c_this,int limitIndex,double test_value){
	int c_arg_limitIndex=limitIndex;
	btScalar c_arg_test_value=test_value;
	int c_out = c_this->testLimitValue(c_arg_limitIndex,c_arg_test_value);
	int wrap_out = (c_out);
	return wrap_out;
}

btRotationalLimitMotor* bullet_NewbtRotationalLimitMotor(){
	btRotationalLimitMotor* wrap_out = new btRotationalLimitMotor();
	return wrap_out;
}

btRotationalLimitMotor* bullet_NewbtRotationalLimitMotor1(btRotationalLimitMotor* limot){
	btRotationalLimitMotor const& c_arg_limot=(btRotationalLimitMotor const&)(*limot);
	btRotationalLimitMotor* wrap_out = new btRotationalLimitMotor(c_arg_limot);
	return wrap_out;
}

double bullet_btRotationalLimitMotor_GetFieldOfM_accumulatedImpulse(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_accumulatedImpulse);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_bounce(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_bounce);
}

int bullet_btRotationalLimitMotor_GetFieldOfM_currentLimit(btRotationalLimitMotor* c_this){
	return (int)(c_this->m_currentLimit);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_currentLimitError(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_currentLimitError);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_currentPosition(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_currentPosition);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_damping(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_damping);
}

bool bullet_btRotationalLimitMotor_GetFieldOfM_enableMotor(btRotationalLimitMotor* c_this){
	return (bool)(c_this->m_enableMotor);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_hiLimit(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_hiLimit);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_limitSoftness(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_limitSoftness);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_loLimit(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_loLimit);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_maxLimitForce(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_maxLimitForce);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_maxMotorForce(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_maxMotorForce);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_normalCFM(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_normalCFM);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_stopCFM(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_stopCFM);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_stopERP(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_stopERP);
}

double bullet_btRotationalLimitMotor_GetFieldOfM_targetVelocity(btRotationalLimitMotor* c_this){
	return (double)(c_this->m_targetVelocity);
}

bool bullet_btRotationalLimitMotor_isLimited(btRotationalLimitMotor* c_this){
	bool c_out = c_this->isLimited();
	bool wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btRotationalLimitMotor_needApplyTorques(btRotationalLimitMotor* c_this){
	bool c_out = c_this->needApplyTorques();
	bool wrap_out = (c_out);
	return wrap_out;
}

double bullet_btRotationalLimitMotor_solveAngularLimits(btRotationalLimitMotor* c_this,double timeStep,btVector3* axis,double jacDiagABInv,btRigidBody* body0,btRigidBody* body1){
	btScalar c_arg_timeStep=timeStep;
	btVector3& c_arg_axis=(btVector3&)(*axis);
	btScalar c_arg_jacDiagABInv=jacDiagABInv;
	btRigidBody * c_arg_body0=(btRigidBody *)(void*)(body0);
	btRigidBody * c_arg_body1=(btRigidBody *)(void*)(body1);
	btScalar c_out = c_this->solveAngularLimits(c_arg_timeStep,c_arg_axis,c_arg_jacDiagABInv,c_arg_body0,c_arg_body1);
	double wrap_out = (c_out);
	return wrap_out;
}

int bullet_btRotationalLimitMotor_testLimitValue(btRotationalLimitMotor* c_this,double test_value){
	btScalar c_arg_test_value=test_value;
	int c_out = c_this->testLimitValue(c_arg_test_value);
	int wrap_out = (c_out);
	return wrap_out;
}

btGeneric6DofConstraintDoubleData2* bullet_NewbtGeneric6DofConstraintDoubleData2(){
	btGeneric6DofConstraintDoubleData2* wrap_out = new btGeneric6DofConstraintDoubleData2();
	return wrap_out;
}

btVector3DoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_angularLowerLimit(btGeneric6DofConstraintDoubleData2* c_this){
	return (btVector3DoubleData*)(&c_this->m_angularLowerLimit);
}

btVector3DoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_angularUpperLimit(btGeneric6DofConstraintDoubleData2* c_this){
	return (btVector3DoubleData*)(&c_this->m_angularUpperLimit);
}

btVector3DoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_linearLowerLimit(btGeneric6DofConstraintDoubleData2* c_this){
	return (btVector3DoubleData*)(&c_this->m_linearLowerLimit);
}

btVector3DoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_linearUpperLimit(btGeneric6DofConstraintDoubleData2* c_this){
	return (btVector3DoubleData*)(&c_this->m_linearUpperLimit);
}

btTransformDoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_rbAFrame(btGeneric6DofConstraintDoubleData2* c_this){
	return (btTransformDoubleData*)(&c_this->m_rbAFrame);
}

btTransformDoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_rbBFrame(btGeneric6DofConstraintDoubleData2* c_this){
	return (btTransformDoubleData*)(&c_this->m_rbBFrame);
}

btTypedConstraintDoubleData* bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_typeConstraintData(btGeneric6DofConstraintDoubleData2* c_this){
	return (btTypedConstraintDoubleData*)(&c_this->m_typeConstraintData);
}

int bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_useLinearReferenceFrameA(btGeneric6DofConstraintDoubleData2* c_this){
	return (int)(c_this->m_useLinearReferenceFrameA);
}

int bullet_btGeneric6DofConstraintDoubleData2_GetFieldOfM_useOffsetForConstraintFrame(btGeneric6DofConstraintDoubleData2* c_this){
	return (int)(c_this->m_useOffsetForConstraintFrame);
}

btGeneric6DofConstraintData* bullet_NewbtGeneric6DofConstraintData(){
	btGeneric6DofConstraintData* wrap_out = new btGeneric6DofConstraintData();
	return wrap_out;
}

btVector3FloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_angularLowerLimit(btGeneric6DofConstraintData* c_this){
	return (btVector3FloatData*)(&c_this->m_angularLowerLimit);
}

btVector3FloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_angularUpperLimit(btGeneric6DofConstraintData* c_this){
	return (btVector3FloatData*)(&c_this->m_angularUpperLimit);
}

btVector3FloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_linearLowerLimit(btGeneric6DofConstraintData* c_this){
	return (btVector3FloatData*)(&c_this->m_linearLowerLimit);
}

btVector3FloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_linearUpperLimit(btGeneric6DofConstraintData* c_this){
	return (btVector3FloatData*)(&c_this->m_linearUpperLimit);
}

btTransformFloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_rbAFrame(btGeneric6DofConstraintData* c_this){
	return (btTransformFloatData*)(&c_this->m_rbAFrame);
}

btTransformFloatData* bullet_btGeneric6DofConstraintData_GetFieldOfM_rbBFrame(btGeneric6DofConstraintData* c_this){
	return (btTransformFloatData*)(&c_this->m_rbBFrame);
}

btTypedConstraintData* bullet_btGeneric6DofConstraintData_GetFieldOfM_typeConstraintData(btGeneric6DofConstraintData* c_this){
	return (btTypedConstraintData*)(&c_this->m_typeConstraintData);
}

int bullet_btGeneric6DofConstraintData_GetFieldOfM_useLinearReferenceFrameA(btGeneric6DofConstraintData* c_this){
	return (int)(c_this->m_useLinearReferenceFrameA);
}

int bullet_btGeneric6DofConstraintData_GetFieldOfM_useOffsetForConstraintFrame(btGeneric6DofConstraintData* c_this){
	return (int)(c_this->m_useOffsetForConstraintFrame);
}

btGeneric6DofConstraint* bullet_NewbtGeneric6DofConstraint(btRigidBody* rbA,btRigidBody* rbB,btTransform* frameInA,btTransform* frameInB,bool useLinearReferenceFrameA){
	btRigidBody& c_arg_rbA=(btRigidBody&)(*rbA);
	btRigidBody& c_arg_rbB=(btRigidBody&)(*rbB);
	btTransform const& c_arg_frameInA=(btTransform const&)(*frameInA);
	btTransform const& c_arg_frameInB=(btTransform const&)(*frameInB);
	bool c_arg_useLinearReferenceFrameA=useLinearReferenceFrameA;
	btGeneric6DofConstraint* wrap_out = new btGeneric6DofConstraint(c_arg_rbA,c_arg_rbB,c_arg_frameInA,c_arg_frameInB,c_arg_useLinearReferenceFrameA);
	return wrap_out;
}

btGeneric6DofConstraint* bullet_NewbtGeneric6DofConstraint1(btRigidBody* rbB,btTransform* frameInB,bool useLinearReferenceFrameB){
	btRigidBody& c_arg_rbB=(btRigidBody&)(*rbB);
	btTransform const& c_arg_frameInB=(btTransform const&)(*frameInB);
	bool c_arg_useLinearReferenceFrameB=useLinearReferenceFrameB;
	btGeneric6DofConstraint* wrap_out = new btGeneric6DofConstraint(c_arg_rbB,c_arg_frameInB,c_arg_useLinearReferenceFrameB);
	return wrap_out;
}

void bullet_btGeneric6DofConstraint_calculateTransforms(btGeneric6DofConstraint* c_this,btTransform* transA,btTransform* transB){
	btTransform const& c_arg_transA=(btTransform const&)(*transA);
	btTransform const& c_arg_transB=(btTransform const&)(*transB);
	c_this->calculateTransforms(c_arg_transA,c_arg_transB);
}

void bullet_btGeneric6DofConstraint_calculateTransforms1(btGeneric6DofConstraint* c_this){
	c_this->calculateTransforms();
}

int bullet_btGeneric6DofConstraint_get_limit_motor_info2(btGeneric6DofConstraint* c_this,btRotationalLimitMotor* limot,btTransform* transA,btTransform* transB,btVector3* linVelA,btVector3* linVelB,btVector3* angVelA,btVector3* angVelB,btTypedConstraint::btConstraintInfo2* info,int row,btVector3* ax1,int rotational,int rotAllowed){
	btRotationalLimitMotor * c_arg_limot=(btRotationalLimitMotor *)(void*)(limot);
	btTransform const& c_arg_transA=(btTransform const&)(*transA);
	btTransform const& c_arg_transB=(btTransform const&)(*transB);
	btVector3 const& c_arg_linVelA=(btVector3 const&)(*linVelA);
	btVector3 const& c_arg_linVelB=(btVector3 const&)(*linVelB);
	btVector3 const& c_arg_angVelA=(btVector3 const&)(*angVelA);
	btVector3 const& c_arg_angVelB=(btVector3 const&)(*angVelB);
	btTypedConstraint::btConstraintInfo2 * c_arg_info=(btTypedConstraint::btConstraintInfo2 *)(void*)(info);
	int c_arg_row=row;
	btVector3& c_arg_ax1=(btVector3&)(*ax1);
	int c_arg_rotational=rotational;
	int c_arg_rotAllowed=rotAllowed;
	int c_out = c_this->get_limit_motor_info2(c_arg_limot,c_arg_transA,c_arg_transB,c_arg_linVelA,c_arg_linVelB,c_arg_angVelA,c_arg_angVelB,c_arg_info,c_arg_row,c_arg_ax1,c_arg_rotational,c_arg_rotAllowed);
	int wrap_out = (c_out);
	return wrap_out;
}

double bullet_btGeneric6DofConstraint_getAngle(btGeneric6DofConstraint* c_this,int axis_index){
	int c_arg_axis_index=axis_index;
	btScalar c_out = c_this->getAngle(c_arg_axis_index);
	double wrap_out = (c_out);
	return wrap_out;
}

void bullet_btGeneric6DofConstraint_getAngularLowerLimit(btGeneric6DofConstraint* c_this,btVector3* angularLower){
	btVector3& c_arg_angularLower=(btVector3&)(*angularLower);
	c_this->getAngularLowerLimit(c_arg_angularLower);
}

void bullet_btGeneric6DofConstraint_getAngularUpperLimit(btGeneric6DofConstraint* c_this,btVector3* angularUpper){
	btVector3& c_arg_angularUpper=(btVector3&)(*angularUpper);
	c_this->getAngularUpperLimit(c_arg_angularUpper);
}

btVector3* bullet_btGeneric6DofConstraint_getAxis(btGeneric6DofConstraint* c_this,int axis_index){
	int c_arg_axis_index=axis_index;
	btVector3 c_out = c_this->getAxis(c_arg_axis_index);
	btVector3* wrap_out = new btVector3(c_out);
	return wrap_out;
}

btTransform* bullet_btGeneric6DofConstraint_getCalculatedTransformA(btGeneric6DofConstraint* c_this){
	btTransform const& c_out = c_this->getCalculatedTransformA();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

btTransform* bullet_btGeneric6DofConstraint_getCalculatedTransformB(btGeneric6DofConstraint* c_this){
	btTransform const& c_out = c_this->getCalculatedTransformB();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

bool bullet_btGeneric6DofConstraint_GetFieldOfM_useSolveConstraintObsolete(btGeneric6DofConstraint* c_this){
	return (bool)(c_this->m_useSolveConstraintObsolete);
}

btTransform* bullet_btGeneric6DofConstraint_getFrameOffsetA(btGeneric6DofConstraint* c_this){
	btTransform const& c_out = c_this->getFrameOffsetA();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

btTransform* bullet_btGeneric6DofConstraint_getFrameOffsetA1(btGeneric6DofConstraint* c_this){
	btTransform& c_out = c_this->getFrameOffsetA();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

btTransform* bullet_btGeneric6DofConstraint_getFrameOffsetB(btGeneric6DofConstraint* c_this){
	btTransform const& c_out = c_this->getFrameOffsetB();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

btTransform* bullet_btGeneric6DofConstraint_getFrameOffsetB1(btGeneric6DofConstraint* c_this){
	btTransform& c_out = c_this->getFrameOffsetB();
	btTransform* wrap_out = (btTransform*)(&c_out);
	return wrap_out;
}

void bullet_btGeneric6DofConstraint_getInfo1NonVirtual(btGeneric6DofConstraint* c_this,btTypedConstraint::btConstraintInfo1* info){
	btTypedConstraint::btConstraintInfo1 * c_arg_info=(btTypedConstraint::btConstraintInfo1 *)(void*)(info);
	c_this->getInfo1NonVirtual(c_arg_info);
}

void bullet_btGeneric6DofConstraint_getInfo2NonVirtual(btGeneric6DofConstraint* c_this,btTypedConstraint::btConstraintInfo2* info,btTransform* transA,btTransform* transB,btVector3* linVelA,btVector3* linVelB,btVector3* angVelA,btVector3* angVelB){
	btTypedConstraint::btConstraintInfo2 * c_arg_info=(btTypedConstraint::btConstraintInfo2 *)(void*)(info);
	btTransform const& c_arg_transA=(btTransform const&)(*transA);
	btTransform const& c_arg_transB=(btTransform const&)(*transB);
	btVector3 const& c_arg_linVelA=(btVector3 const&)(*linVelA);
	btVector3 const& c_arg_linVelB=(btVector3 const&)(*linVelB);
	btVector3 const& c_arg_angVelA=(btVector3 const&)(*angVelA);
	btVector3 const& c_arg_angVelB=(btVector3 const&)(*angVelB);
	c_this->getInfo2NonVirtual(c_arg_info,c_arg_transA,c_arg_transB,c_arg_linVelA,c_arg_linVelB,c_arg_angVelA,c_arg_angVelB);
}

void bullet_btGeneric6DofConstraint_getLinearLowerLimit(btGeneric6DofConstraint* c_this,btVector3* linearLower){
	btVector3& c_arg_linearLower=(btVector3&)(*linearLower);
	c_this->getLinearLowerLimit(c_arg_linearLower);
}

void bullet_btGeneric6DofConstraint_getLinearUpperLimit(btGeneric6DofConstraint* c_this,btVector3* linearUpper){
	btVector3& c_arg_linearUpper=(btVector3&)(*linearUpper);
	c_this->getLinearUpperLimit(c_arg_linearUpper);
}

double bullet_btGeneric6DofConstraint_getRelativePivotPosition(btGeneric6DofConstraint* c_this,int axis_index){
	int c_arg_axis_index=axis_index;
	btScalar c_out = c_this->getRelativePivotPosition(c_arg_axis_index);
	double wrap_out = (c_out);
	return wrap_out;
}

btRotationalLimitMotor* bullet_btGeneric6DofConstraint_getRotationalLimitMotor(btGeneric6DofConstraint* c_this,int index){
	int c_arg_index=index;
	btRotationalLimitMotor * c_out = c_this->getRotationalLimitMotor(c_arg_index);
	btRotationalLimitMotor* wrap_out = (btRotationalLimitMotor*)(void*)(c_out);
	return wrap_out;
}

btTranslationalLimitMotor* bullet_btGeneric6DofConstraint_getTranslationalLimitMotor(btGeneric6DofConstraint* c_this){
	btTranslationalLimitMotor * c_out = c_this->getTranslationalLimitMotor();
	btTranslationalLimitMotor* wrap_out = (btTranslationalLimitMotor*)(void*)(c_out);
	return wrap_out;
}

bool bullet_btGeneric6DofConstraint_getUseFrameOffset(btGeneric6DofConstraint* c_this){
	bool c_out = c_this->getUseFrameOffset();
	bool wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btGeneric6DofConstraint_getUseLinearReferenceFrameA(btGeneric6DofConstraint* c_this){
	bool c_out = c_this->getUseLinearReferenceFrameA();
	bool wrap_out = (c_out);
	return wrap_out;
}

bool bullet_btGeneric6DofConstraint_isLimited(btGeneric6DofConstraint* c_this,int limitIndex){
	int c_arg_limitIndex=limitIndex;
	bool c_out = c_this->isLimited(c_arg_limitIndex);
	bool wrap_out = (c_out);
	return wrap_out;
}

void bullet_btGeneric6DofConstraint_setAngularLowerLimit(btGeneric6DofConstraint* c_this,btVector3* angularLower){
	btVector3 const& c_arg_angularLower=(btVector3 const&)(*angularLower);
	c_this->setAngularLowerLimit(c_arg_angularLower);
}

void bullet_btGeneric6DofConstraint_setAngularUpperLimit(btGeneric6DofConstraint* c_this,btVector3* angularUpper){
	btVector3 const& c_arg_angularUpper=(btVector3 const&)(*angularUpper);
	c_this->setAngularUpperLimit(c_arg_angularUpper);
}

void bullet_btGeneric6DofConstraint_setAxis(btGeneric6DofConstraint* c_this,btVector3* axis1,btVector3* axis2){
	btVector3 const& c_arg_axis1=(btVector3 const&)(*axis1);
	btVector3 const& c_arg_axis2=(btVector3 const&)(*axis2);
	c_this->setAxis(c_arg_axis1,c_arg_axis2);
}

void bullet_btGeneric6DofConstraint_setFrames(btGeneric6DofConstraint* c_this,btTransform* frameA,btTransform* frameB){
	btTransform const& c_arg_frameA=(btTransform const&)(*frameA);
	btTransform const& c_arg_frameB=(btTransform const&)(*frameB);
	c_this->setFrames(c_arg_frameA,c_arg_frameB);
}

void bullet_btGeneric6DofConstraint_setLimit(btGeneric6DofConstraint* c_this,int axis,double lo,double hi){
	int c_arg_axis=axis;
	btScalar c_arg_lo=lo;
	btScalar c_arg_hi=hi;
	c_this->setLimit(c_arg_axis,c_arg_lo,c_arg_hi);
}

void bullet_btGeneric6DofConstraint_setLinearLowerLimit(btGeneric6DofConstraint* c_this,btVector3* linearLower){
	btVector3 const& c_arg_linearLower=(btVector3 const&)(*linearLower);
	c_this->setLinearLowerLimit(c_arg_linearLower);
}

void bullet_btGeneric6DofConstraint_setLinearUpperLimit(btGeneric6DofConstraint* c_this,btVector3* linearUpper){
	btVector3 const& c_arg_linearUpper=(btVector3 const&)(*linearUpper);
	c_this->setLinearUpperLimit(c_arg_linearUpper);
}

void bullet_btGeneric6DofConstraint_setUseFrameOffset(btGeneric6DofConstraint* c_this,bool frameOffsetOnOff){
	bool c_arg_frameOffsetOnOff=frameOffsetOnOff;
	c_this->setUseFrameOffset(c_arg_frameOffsetOnOff);
}

void bullet_btGeneric6DofConstraint_setUseLinearReferenceFrameA(btGeneric6DofConstraint* c_this,bool linearReferenceFrameA){
	bool c_arg_linearReferenceFrameA=linearReferenceFrameA;
	c_this->setUseLinearReferenceFrameA(c_arg_linearReferenceFrameA);
}

bool bullet_btGeneric6DofConstraint_testAngularLimitMotor(btGeneric6DofConstraint* c_this,int axis_index){
	int c_arg_axis_index=axis_index;
	bool c_out = c_this->testAngularLimitMotor(c_arg_axis_index);
	bool wrap_out = (c_out);
	return wrap_out;
}

void bullet_btGeneric6DofConstraint_updateRHS(btGeneric6DofConstraint* c_this,double timeStep){
	btScalar c_arg_timeStep=timeStep;
	c_this->updateRHS(c_arg_timeStep);
}

#ifdef __cplusplus
}
#endif
